#pragma once

class BulletMgr
{
protected:
	std::vector<Bullet *> bullets;

public:
	BulletMgr();
	~BulletMgr();

	static BulletMgr * getInstance();

	Bullet * create(const std::wstring & name, int vx, int vy, int x, int y, const std::wstring & sname = L"Linear", int lifespan = 100000, int rotatespeed = 1200);
	Bullet * create(const std::wstring & name, const tagBullet & bullet, int x, int y, int vx, int vy);
	void update(double dtime);
	//virtual void collisiondetect() = 0;
	void draw(Graphics * graphics);
	void clear();
};

//class HeroBulletMgr :public BulletMgr
//{
//private:
//	HeroBulletMgr();
//	~HeroBulletMgr();
//
//public:
//	static HeroBulletMgr * getInstance();
//
//	//void create(const std::wstring & name, int vx, int vy, int x, int y);
//	//void update(double dtime) override;
//	//void collisiondetect();
//};
//
//class EnemyBulletMgr :public BulletMgr
//{
//private:
//	EnemyBulletMgr();
//	~EnemyBulletMgr();
//
//public:
//	static EnemyBulletMgr * getInstance();
//
//	//void create(const std::wstring & name, int vx, int vy, int x, int y);
//	//void update(double dtime) override;
//	//void collisiondetect();
//};